import Recorder from 'js-audio-recorder';

export default function useAudioRecorder() {
  const recorder = new Recorder({
    sampleBits: 16, // 采样位数，支持 8 或 16，默认是16
    sampleRate: 16000, // 采样率，支持 11025、16000、22050、24000、44100、48000，根据浏览器默认值，
    numChannels: 1 // 声道，支持 1 或 2， 默认是1
  });

  /**
   * @desc 开始录音
   *
   */
  function startRecord() {
    //获取录音权限
    return new Promise((resolve, reject) => {
      (<any>Recorder)
        .getPermission()
        .then(() => {
          //开始录音
          recorder
            .start()
            .then((res) => {
              resolve(res);
            })
            .catch((err) => {
              reject(err);
              console.log(err);
            });
        })
        .catch((err: any) => {
          reject(err);
          console.log(err);
        });
    });
  }

  /**
   * @desc 停止录音
   */
  function stopRecord() {
    recorder.stop();
  }
  /**
   * @desc 获取录音文件
   * 会终止录音
   */
  function getRecordFile() {
    return {
      blob: recorder.getWAVBlob(),
      duration: recorder.duration
    };
  }

  /**
   *
   * @returns 录音时长
   */
  function getRecordTime() {
    return recorder.duration;
  }
  /**
   * @desc 销毁录音实例
   */
  function destroyRecord() {
    recorder.destroy();
  }

  return {
    startRecord,
    stopRecord,
    getRecordFile,
    destroyRecord,
    getRecordTime
  };
}
